using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Input;
using System.Collections.Specialized;
using System.Windows.Data;

namespace GMUtilitiesDotNet.Gestures
{
    public interface IGesture
    {
        bool OnMouseDown(MouseButtonEventArgs args);
        bool OnMouseUp(MouseButtonEventArgs args);
        bool OnMouseLeftButtonDown(MouseButtonEventArgs args);
        bool OnMouseLeftButtonUp(MouseButtonEventArgs args);
        bool OnMouseRightButtonDown(MouseButtonEventArgs args);
        bool OnMouseRightButtonUp(MouseButtonEventArgs args);
        bool OnMouseMove(MouseEventArgs args);
        bool OnMouseWheel(MouseWheelEventArgs args);
        bool OnMouseEnter(MouseEventArgs args);
        bool OnMouseLeave(MouseEventArgs args);

        bool KeyboardInput(KeyEventArgs args);

        bool LostFocus();

        void Reset();

        bool Handled { get; }
        object CommandParam { get; }
    }
}
